package com.ttbj.api.bill;

import java.util.List;

import com.ttbj.api.dto.Page;
import com.ttbj.api.dto.bill.BillCarTypeDto;
import com.ttbj.api.dto.bill.BillDistanceDto;
import com.ttbj.api.dto.bill.BillPieceDto;
import com.ttbj.api.dto.bill.BillSecondDto;
import com.ttbj.api.dto.bill.BillServeDto;
import com.ttbj.api.dto.bill.BillTimingDto;
import com.ttbj.api.dto.bill.BillVehicleDto;
import com.ttbj.api.exception.BusinessException;

public interface BillPieceService {
	
	/**
	 * 查询按件计费信息
	 * @return
	 * @throws BusinessException
	 */
	public BillPieceDto findBillPieceInfo() throws BusinessException;
	
	/**
	 * 修改按件计费
	 * @param billPieceDto 按件计费信息
	 * @throws BusinessException
	 */
	public void editBillPieceInfo(BillPieceDto billPieceDto) throws BusinessException;
	
	/**
	 * 查询按次计费信息
	 * @return
	 */
	public BillSecondDto findBillSecondInfo() throws BusinessException;
	
	/**
	 * 修改按次计费
	 * @param billSecondDto 按次计费信息
	 * @throws BusinessException
	 */
	public void editBillSecondInfo(BillSecondDto billSecondDto) throws BusinessException;
	
	/**
	 * 查询按里程计费规则信息
	 * @return
	 */
	public List<BillDistanceDto> findBillDistanceInfo() throws BusinessException;
	
	/**
	 * 修改按里程计费信息
	 * @param billDistanceDto 按里程计费对象信息
	 * @throws BusinessException
	 */
	public void editBillDistanceInfo(BillDistanceDto billDistanceDto) throws BusinessException;
	
	/**
	 * 查询服务类型权重信息
	 * @return
	 * @throws BusinessException
	 */
	public BillServeDto findBillServeInfo() throws BusinessException;
	
	/**
	 * 修改服务类型权重信息
	 * @param billServeDto 服务类型权重信息
	 * @throws BusinessException
	 */
	public void editBillServeInfo(BillServeDto billServeDto) throws BusinessException;
	
	/**
	 * 查询车辆类型权重信息
	 * @return
	 * @throws BusinessExceptionl
	 */
	public BillVehicleDto findBillVehicleInfo() throws BusinessException;
	
	/**
	 * 修改车辆类型权重信息
	 * @param billVehicleDto 车辆类型权重信息
	 * @throws BusinessException
	 */
	public void editBillVehicleInfo(BillVehicleDto billVehicleDto) throws BusinessException;
	
	/**
	 * 查询昼夜权重信息
	 * @param page 分页信息
	 * @return
	 * @throws BusinessException
	 */
	public List<BillTimingDto> findBillTimingInfo(Page page) throws BusinessException;
	
	/**
	 * 通过类型查询昼夜权重信息
	 * @param type 类型标识 0：搬家单 1 ：短运单
	 * @return
	 * @throws BusinessException
	 */
	public BillTimingDto findBillTimingInfoByType(Integer type) throws BusinessException;
	
	/**
	 * 修改昼夜权重信息
	 * @param billTimingDto 时间设置信息
	 * @throws BusinessException
	 */
	public void editBillTimingInfo(BillTimingDto billTimingDto) throws BusinessException;
	
	/**
	 * 查询车辆类型及车型权重信息
	 * @param page 分页信息
	 * @return
	 * @throws BusinessException
	 */
	public List<BillCarTypeDto> findCarTypeInfo(Page page) throws BusinessException;
	
	/**
	 * 通过id查询车辆类型和权重信息
	 * @param carTypeId 主键
	 */
	public BillCarTypeDto findCarTypeInfoById(Integer carTypeId) throws BusinessException;
	
	/**
	 * 修改车辆类型和权重信息
	 * @param billCarTypeDto 车辆类型及车型权重信息
	 * @throws BusinessException
	 */
	public void editCarTypeInfo(BillCarTypeDto billCarTypeDto) throws BusinessException;
	
	/**
	 * 禁用或启用此车辆类型及权重
	 * @param billCarTypeDto 车辆类型及车型权重信息
	 * @throws BusinessException
	 */
	public void editCarTypeInfoIsDel(BillCarTypeDto billCarTypeDto) throws BusinessException;
}
